#ifndef IMAGEEDITOR_H
#define IMAGEEDITOR_H

#include <QGraphicsView>

/*
    继承了 QGraphicsView 图像类
    1、重载了fitInView函数，在源码的基础上实现了zoom且适应屏幕居中的效果
    2、重载了resizeEvent，在其中执行了fitInView函数
    3、其他函数均为辅助函数
*/

class ImageEditor : public QGraphicsView
{
    Q_OBJECT
public:
    ImageEditor(QString imagePath, QWidget *parent = nullptr);

    void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode);
    void setZoomFactor(double zoomFactor);
    QPixmap Pixmap() const;
    QString ImagePath() const;

protected:
    void resizeEvent(QResizeEvent *event) override;

private:
    void Init();

    QPixmap mImage;
    QString mImagePath;
    double mZoomFactor {1.};
};

#endif // IMAGEEDITOR_H
